package com.jie.annotation;

import com.jie.constants.RedisLimitType;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@EnableAspectJAutoProxy
public @interface Limit {
    // 资源名称，用于描述接口功能
    String name() default "";
    // 令牌桶的 装满 周期，单位为秒
    int period();
    // 桶的容量
    int capacity() default 10;
    // 每秒填充的令牌数
    double rate() default 1.0;

    // key prefix
    String prefix() default "";
    // 限制类型
    RedisLimitType limitType() default RedisLimitType.IP;
}